package cool.lichuan.zabbix.domain.host.host;

import cool.lichuan.zabbix.domain.host.group.HostGroup;
import cool.lichuan.zabbix.util.FieldUtil.BeanField;

import java.io.Serializable;
import java.util.List;

/**
 * @author LiChuan
 * @date 2021/11/8 8:52
 */
public class Host implements Serializable {
    private List<String> maintenances;
    /** 主机的ID */
    @BeanField("hostid")
    private String hostId;
    /** 主机正式名称 */
    private String host;
    /** Zabbix agent的可用性 可能的值为： 0 - （默认）未知；  1 - 可用； 2 - 不可用； */
    private String available;
    /** 说明 */
    private String description;
    /**  Zabbix agent不可用状态的下一次轮询时间(时间戳) */
    @BeanField("disable_until")
    private Long disableUntil;
    /** Zabbix agent不可用时的错误信息 */
    private String error;
    /**   Zabbix agent不可用时的时间(时间戳) */
    @BeanField("errors_from")
    private Long errorsFrom;
    /** 主机的来源 可能的值： 0 - 普通主机； 4 - 自动发现的主机 */
    private Integer flags;
    /** 资产清单填充模式 可能的值： -1 - 禁用； 0 - (默认) 手动； 1 - 自动 */
    @BeanField("inventory_mode")
    private Integer inventoryMode;
    /** MI 认证算法 可能的值： -1 - (默认) 默认； 0 - 无； 1 - MD2； 2 - MD5 4 - straight； 5 - OEM； 6 - RMCP+。 */
    @BeanField("ipmi_authtype")
    private String ipmiAuthType;
    /**  IPMI agent的可用性 可能的值： 0 - (默认) 未知； 1 - 可用； 2 - 不可用。 */
    @BeanField("ipmi_available")
    private String ipmiAvailable;
    /**  IPMI agent不可用状态的下一次轮询时间(时间戳) */
    @BeanField("ipmi_disable_until")
    private Long ipmiDisableUntil;
    /**  IPMI agent不可用时的错误信息 */
    @BeanField("ipmi_error")
    private String ipmiError;
    /**  IPMI agent不可用时的时间(时间戳) */
    @BeanField("ipmi_errors_from")
    private Long ipmiErrorsFrom;
    /**  密码 */
    @BeanField("ipmi_password")
    private String ipmiPassword;
    /**  MI 权限等级。 可能的值： 1 - 回调； 2 - (默认) 用户； 3 - 操作员； 4 - 管理员； 5 - OEM原厂。 */
    @BeanField("ipmi_privilege")
    private Integer ipmiPrivilege;
    /**  MI 用户名 */
    @BeanField("ipmi_username")
    private String ipmiUsername;
    /**  JMX agent的可用性。 可能的值： 0 - (默认) 未知； 1 - 可用； 2 - 不可用。 */
    @BeanField("jmx_available")
    private String jmxAvailable;
    /**  JMX agent不可用状态的下一次轮询时间 */
    @BeanField("jmx_disable_until")
    private String jmxDisableUntil;
    /**   JMX agent不可用时的错误信息 */
    @BeanField("jmx_error")
    private String jmxError;
    /**  JMX agent不可用时的时间(时间戳) */
    @BeanField("jmx_errors_from")
    private Long jmxErrorsFrom;
    /**  有效维护的开始时间(时间戳) */
    @BeanField("maintenance_from")
    private Long maintenanceFrom;
    /**  有效维护的状态 可能的值：0 - (默认) 没有维护； 1 - 有效维护 */
    @BeanField("maintenance_status")
    private Integer maintenanceStatus;
    /**  有效维护类型。 可能的值： 0 - (默认) 维护期间搜集数据； 1 - 维护期间不搜集数据 */
    @BeanField("maintenance_type")
    private Integer maintenanceType;
    /**  目前对主机生效的维护模式ID。  */
    @BeanField("maintenanceid")
    private String maintenanceId;
    /** 主机名，默认host属性值 */
    private String name;
    /** 主机的Proxy服务器的hostid */
    @BeanField("proxy_hostid")
    private String proxyHostId;
    /**  SNMP agent的可用性。 可能的值： 0 - (默认) 未知； 1 - 可用； 2 - 不可用。 */
    @BeanField("snmp_available")
    private String snmpAvailable;
    /**  SNMP agent不可用状态的下一次轮询时间(时间戳) */
    @BeanField("snmp_disable_until")
    private Long snmpDisableUntil;
    /**  SNMP agent不可用时的错误信息 */
    @BeanField("snmp_error")
    private String snmpError;
    /**   SNMP agent不可用时的时间(时间戳) */
    @BeanField("snmp_errors_from")
    private Long snmpErrorsFrom;
    /**  主机的状态。 可能的值： 0 - (默认) 已监控的主机； 1 - 未监控的主机。 */
    private Integer status;
    /**   到主机的连接。 可能的值： 1 - (默认) 没有加密； 2 - PSK； 4 - 证书。 */
    @BeanField("tls_connect")
    private Integer tlsConnect;
    /**   来主机的连接。 可能的值： 1 - (默认) 没有加密； 2 - PSK； 4 - 证书。 */
    @BeanField("tls_accept")
    private String tlsAccept;
    /**   证书发行机构 */
    @BeanField("tls_issuer")
    private String tlsIssuer;
    /**   证书主题 */
    @BeanField("tls_subject")
    private String tlsSubject;
    /**   PS认证。 如果tls_connect 或 tls_accept启用了PSK，那么该选项是必选。
     不要将敏感信息放在PSK身份中，它会通过网络以未加密的方式传输，以通知接收者要使用哪个PSK */
    @BeanField("tls_psk_identity")
    private String tlsPskIdentity;
    /**   PS至少需要32位16进制数字构成。如果tls_connect 或 tls_accept启用了PSK，那么该选项是必选 */
    @BeanField("tls_psk")
    private String tlsPsk;
    private String lastaccess;
    private List<HostGroup> groups;

    public List<HostGroup> getGroups() {
        return groups;
    }

    public void setGroups(List<HostGroup> groups) {
        this.groups = groups;
    }

    public List<String> getMaintenances() {
        return maintenances;
    }

    public void setMaintenances(List<String> maintenances) {
        this.maintenances = maintenances;
    }

    public String getHostId() {
        return hostId;
    }

    public void setHostId(String hostId) {
        this.hostId = hostId;
    }

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public String getAvailable() {
        return available;
    }

    public void setAvailable(String available) {
        this.available = available;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Long getDisableUntil() {
        return disableUntil;
    }

    public void setDisableUntil(Long disableUntil) {
        this.disableUntil = disableUntil;
    }

    public String getError() {
        return error;
    }

    public void setError(String error) {
        this.error = error;
    }

    public Long getErrorsFrom() {
        return errorsFrom;
    }

    public void setErrorsFrom(Long errorsFrom) {
        this.errorsFrom = errorsFrom;
    }

    public Integer getFlags() {
        return flags;
    }

    public void setFlags(Integer flags) {
        this.flags = flags;
    }

    public Integer getInventoryMode() {
        return inventoryMode;
    }

    public void setInventoryMode(Integer inventoryMode) {
        this.inventoryMode = inventoryMode;
    }

    public String getIpmiAuthType() {
        return ipmiAuthType;
    }

    public void setIpmiAuthType(String ipmiAuthType) {
        this.ipmiAuthType = ipmiAuthType;
    }

    public String getIpmiAvailable() {
        return ipmiAvailable;
    }

    public void setIpmiAvailable(String ipmiAvailable) {
        this.ipmiAvailable = ipmiAvailable;
    }

    public Long getIpmiDisableUntil() {
        return ipmiDisableUntil;
    }

    public void setIpmiDisableUntil(Long ipmiDisableUntil) {
        this.ipmiDisableUntil = ipmiDisableUntil;
    }

    public String getIpmiError() {
        return ipmiError;
    }

    public void setIpmiError(String ipmiError) {
        this.ipmiError = ipmiError;
    }

    public Long getIpmiErrorsFrom() {
        return ipmiErrorsFrom;
    }

    public void setIpmiErrorsFrom(Long ipmiErrorsFrom) {
        this.ipmiErrorsFrom = ipmiErrorsFrom;
    }

    public String getIpmiPassword() {
        return ipmiPassword;
    }

    public void setIpmiPassword(String ipmiPassword) {
        this.ipmiPassword = ipmiPassword;
    }

    public Integer getIpmiPrivilege() {
        return ipmiPrivilege;
    }

    public void setIpmiPrivilege(Integer ipmiPrivilege) {
        this.ipmiPrivilege = ipmiPrivilege;
    }

    public String getIpmiUsername() {
        return ipmiUsername;
    }

    public void setIpmiUsername(String ipmiUsername) {
        this.ipmiUsername = ipmiUsername;
    }

    public String getJmxAvailable() {
        return jmxAvailable;
    }

    public void setJmxAvailable(String jmxAvailable) {
        this.jmxAvailable = jmxAvailable;
    }

    public String getJmxDisableUntil() {
        return jmxDisableUntil;
    }

    public void setJmxDisableUntil(String jmxDisableUntil) {
        this.jmxDisableUntil = jmxDisableUntil;
    }

    public String getJmxError() {
        return jmxError;
    }

    public void setJmxError(String jmxError) {
        this.jmxError = jmxError;
    }

    public Long getJmxErrorsFrom() {
        return jmxErrorsFrom;
    }

    public void setJmxErrorsFrom(Long jmxErrorsFrom) {
        this.jmxErrorsFrom = jmxErrorsFrom;
    }

    public Long getMaintenanceFrom() {
        return maintenanceFrom;
    }

    public void setMaintenanceFrom(Long maintenanceFrom) {
        this.maintenanceFrom = maintenanceFrom;
    }

    public Integer getMaintenanceStatus() {
        return maintenanceStatus;
    }

    public void setMaintenanceStatus(Integer maintenanceStatus) {
        this.maintenanceStatus = maintenanceStatus;
    }

    public Integer getMaintenanceType() {
        return maintenanceType;
    }

    public void setMaintenanceType(Integer maintenanceType) {
        this.maintenanceType = maintenanceType;
    }

    public String getMaintenanceId() {
        return maintenanceId;
    }

    public void setMaintenanceId(String maintenanceId) {
        this.maintenanceId = maintenanceId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getProxyHostId() {
        return proxyHostId;
    }

    public void setProxyHostId(String proxyHostId) {
        this.proxyHostId = proxyHostId;
    }

    public String getSnmpAvailable() {
        return snmpAvailable;
    }

    public void setSnmpAvailable(String snmpAvailable) {
        this.snmpAvailable = snmpAvailable;
    }

    public Long getSnmpDisableUntil() {
        return snmpDisableUntil;
    }

    public void setSnmpDisableUntil(Long snmpDisableUntil) {
        this.snmpDisableUntil = snmpDisableUntil;
    }

    public String getSnmpError() {
        return snmpError;
    }

    public void setSnmpError(String snmpError) {
        this.snmpError = snmpError;
    }

    public Long getSnmpErrorsFrom() {
        return snmpErrorsFrom;
    }

    public void setSnmpErrorsFrom(Long snmpErrorsFrom) {
        this.snmpErrorsFrom = snmpErrorsFrom;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Integer getTlsConnect() {
        return tlsConnect;
    }

    public void setTlsConnect(Integer tlsConnect) {
        this.tlsConnect = tlsConnect;
    }

    public String getTlsAccept() {
        return tlsAccept;
    }

    public void setTlsAccept(String tlsAccept) {
        this.tlsAccept = tlsAccept;
    }

    public String getTlsIssuer() {
        return tlsIssuer;
    }

    public void setTlsIssuer(String tlsIssuer) {
        this.tlsIssuer = tlsIssuer;
    }

    public String getTlsSubject() {
        return tlsSubject;
    }

    public void setTlsSubject(String tlsSubject) {
        this.tlsSubject = tlsSubject;
    }

    public String getTlsPskIdentity() {
        return tlsPskIdentity;
    }

    public void setTlsPskIdentity(String tlsPskIdentity) {
        this.tlsPskIdentity = tlsPskIdentity;
    }

    public String getTlsPsk() {
        return tlsPsk;
    }

    public void setTlsPsk(String tlsPsk) {
        this.tlsPsk = tlsPsk;
    }

    public String getLastaccess() {
        return lastaccess;
    }

    public void setLastaccess(String lastaccess) {
        this.lastaccess = lastaccess;
    }

    @Override
    public String toString() {
        return "HostResp{" +
                "maintenances=" + maintenances +
                ", hostId='" + hostId + '\'' +
                ", host='" + host + '\'' +
                ", available='" + available + '\'' +
                ", description='" + description + '\'' +
                ", disableUntil=" + disableUntil +
                ", error='" + error + '\'' +
                ", errorsFrom=" + errorsFrom +
                ", flags=" + flags +
                ", inventoryMode=" + inventoryMode +
                ", ipmiAuthType='" + ipmiAuthType + '\'' +
                ", ipmiAvailable='" + ipmiAvailable + '\'' +
                ", ipmiDisableUntil=" + ipmiDisableUntil +
                ", ipmiError='" + ipmiError + '\'' +
                ", ipmiErrorsFrom=" + ipmiErrorsFrom +
                ", ipmiPassword='" + ipmiPassword + '\'' +
                ", ipmiPrivilege=" + ipmiPrivilege +
                ", ipmiUsername='" + ipmiUsername + '\'' +
                ", jmxAvailable='" + jmxAvailable + '\'' +
                ", jmxDisableUntil='" + jmxDisableUntil + '\'' +
                ", jmxError='" + jmxError + '\'' +
                ", jmxErrorsFrom=" + jmxErrorsFrom +
                ", maintenanceFrom=" + maintenanceFrom +
                ", maintenanceStatus=" + maintenanceStatus +
                ", maintenanceType=" + maintenanceType +
                ", maintenanceId='" + maintenanceId + '\'' +
                ", name='" + name + '\'' +
                ", proxyHostId='" + proxyHostId + '\'' +
                ", snmpAvailable='" + snmpAvailable + '\'' +
                ", snmpDisableUntil=" + snmpDisableUntil +
                ", snmpError='" + snmpError + '\'' +
                ", snmpErrorsFrom=" + snmpErrorsFrom +
                ", status=" + status +
                ", tlsConnect=" + tlsConnect +
                ", tlsAccept='" + tlsAccept + '\'' +
                ", tlsIssuer='" + tlsIssuer + '\'' +
                ", tlsSubject='" + tlsSubject + '\'' +
                ", tlsPskIdentity='" + tlsPskIdentity + '\'' +
                ", tlsPsk='" + tlsPsk + '\'' +
                ", lastaccess='" + lastaccess + '\'' +
                '}';
    }

    private static final long serialVersionUID = 7913513146881262966L;
}
